// RTTI ,Runtime Type identification运行时类型标识
// dynamic_cast operator
// typeid
// const_cast,将常量指针转换为常指针
// static_cast
// reinterpret_cast
#include <iostream>
#include <string>
class parent{
    public:
    virtual ~parent();
};
class son: public parent{};    // 很多时候子类中的函数父类没有
int main(){
    using namespace std;
    parent* p = new parent();
    son* s = new son();
    // son* ss = (son*)p;   // not safe,通过ss调用函数有可能发生运行时异常或出错
    // 可以使用如下方式
    son* ss = dynamic_cast<son*>(p);  // 进行安全检查
    // 判断类型是否相同
    string a = "ha";
    if(typeid(string) == typeid(a)){
        cout<<"same";
    }

    return 0;
}